package top.hjcwzx.types.design.framework.tree;

/**
 * {@code @author} hujincheng <br/>
 * {@code @description} 策略处理器
 * T : 入参类型
 * D : 动态上下文参数
 * R : 返回参数类型
 * <br/>
 */
public interface StrategyHandler<T, D, R> {

    StrategyHandler DEFAULT = (T, D) -> null;

    /**
     * 执行
     * @param requestParameter 入参
     * @param dynamicContext 动态上下文
     * @return 返回值
     * @throws Exception 异常
     */
    R apply(T requestParameter, D dynamicContext) throws Exception;
}
